﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using QLTV_V2.BussinessLogic;
using QLTV_V2.BussinessObject;
using QLTV_V2.DataAccess;

namespace QLTV_V2
{
    public partial class FrmDutoanMuaSach : DevComponents.DotNetBar.Office2007RibbonForm
    {

        public FrmDutoanMuaSach()
        {
            InitializeComponent();
        }
        ConnectData conn = new ConnectData();
        Utilities uti = new Utilities();
        SachBUS sachBUS = new SachBUS();
        PhieuDuToan phieuDT = new PhieuDuToan();
        CTPhieuDuToan ctDT = new CTPhieuDuToan();
        private int kt;
        private string maPhieu;
        public string manv;
        private void FrmDutoanMuaSach_Load(object sender, EventArgs e)
        {
            //Load combobox phieu du toan
            DataTable tbPhieuDT = uti.getDataSource("PhieuDuToan", "NgayLap");
            comb_MaPhieuDuToan.DataSource = tbPhieuDT;
            DataRow drPhieuDT = tbPhieuDT.NewRow();
            drPhieuDT["MaPhieuDuToan"] = "chon";
            drPhieuDT["TenPhieu"] = "Chọn phiếu đã lập";
            tbPhieuDT.Rows.InsertAt(drPhieuDT, 0);
            comb_MaPhieuDuToan.DisplayMember = "TenPhieu";
            comb_MaPhieuDuToan.ValueMember = "MaPhieuDuToan";
            comb_MaPhieuDuToan.SelectedIndex = 0;
            comb_MaPhieuDuToan.Enabled = true;
            //Load combobox
            comb_Kho.DataSource = uti.getDataSource("LoaiSach", "TenLoaiSach");
            comb_Kho.DisplayMember = "TenLoaiSach";
            comb_Kho.ValueMember = "MaLoaiSach";
            //Load ngày giờ
            date_Ngaylap.Value = System.DateTime.Now;
            //Load trạng thái
            loadStatus_Button(true);
            btn_Inthe.Enabled = true;
        }
        private void comb_MaPhieuDuToan_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (comb_MaPhieuDuToan.SelectedIndex != 0)
            {
                phieuDT = sachBUS.GetPhieuDuToan_Object(comb_MaPhieuDuToan.SelectedValue.ToString());
                txt_SoPhieu.Text = phieuDT.MaPhieuDuToan;
                txt_Tenphieu.Text = phieuDT.TenPhieu;
                date_Ngaylap.Value = phieuDT.NgayLap;
                dgv_DuToan.DataSource = sachBUS.GetCTPhieuDuToan(txt_SoPhieu.Text);
            }
            else
            {
                txt_SoPhieu.Text = "";
                txt_Tenphieu.Text = "";
                date_Ngaylap.Value = System.DateTime.Now;
                dgv_DuToan.DataSource = sachBUS.GetCTPhieuDuToan(txt_SoPhieu.Text);
            }
            loadStatus_Button(true);
        }
        private void btn_Them_Click(object sender, EventArgs e)
        {
            
            comb_MaPhieuDuToan.Enabled = false;
            comb_MaPhieuDuToan.SelectedIndex = 0;
            string lastID = uti.GetLastID("PhieuDuToan", "MaPhieuDuToan", "MaPhieuDuToan", "DT-0000");
            string nextID = uti.GetNextID(lastID, "DT-");
            txt_SoPhieu.Text = nextID;
            kt = 1;
            //Load trạng thái
            txt_Tenphieu.Text = "";
            date_Ngaylap.Value = System.DateTime.Now;
            loadStatus_Button(false);
            comb_Kho.Enabled = false;
            txt_Nhande.ReadOnly = true;
            txt_Soluong.ReadOnly = true;
            txt_Dongia.ReadOnly = true;
            btn_Inthe.Enabled = false;
            btn_Nhaptiep.Enabled = false;
            btn_Huychon.Enabled = false;

        }

        private void btn_Sua_Click(object sender, EventArgs e)
        {
            maPhieu = txt_SoPhieu.Text;
            kt=2;
            loadStatus_Button(false);
            comb_MaPhieuDuToan.Enabled = false;
        }

        private void btn_Xoa_Click(object sender, EventArgs e)
        {
            if (comb_MaPhieuDuToan.SelectedIndex != 0)
            {
                if (MessageBox.Show("Bạn có muốn xóa " + txt_SoPhieu.Text + " không?", "Hỏi",
      MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    if (uti.deleteTable("PhieuDuToan", "MaPhieuDuToan", txt_SoPhieu.Text) == true)
                    {
                        MessageBox.Show("Đã xóa");
                        FrmDutoanMuaSach_Load(sender, e);
                    }
                    else
                        MessageBox.Show("Không thể xóa");
                }
            }
            else
                MessageBox.Show("Chưa chọn phiếu để xóa", "Thông báo");
        }

        private void btn_Luu_Click(object sender, EventArgs e)
        {
            phieuDT = getTTPhieuDT();
            if (phieuDT.TenPhieu != "")
            {
                if (kt == 1)//Thêm
                {

                    if (uti.CheckExitsValue("PhieuDuToan", "MaPhieuDuToan", phieuDT.MaPhieuDuToan) == true)
                    {
                        if (sachBUS.InsertPhieuDuToan(phieuDT) == true)
                        {
                            loadStatus_Button(false);
                            btn_Nhaptiep.Enabled = true;
                            btn_Huychon.Enabled = true;
                            txt_Tenphieu.ReadOnly = true;
                            date_Ngaylap.Enabled = false;
                            btn_Luu.Enabled = false;
                        }
                        else
                            MessageBox.Show("Không thể lập phiếu, kiểm tra thông tin", "Thông báo");
                    }
                    else
                        MessageBox.Show("Mã phiếu bị trùng", "Thông báo");
                }
                else //Sửa
                {
                    if (sachBUS.UpdatePhieuDuToan(phieuDT, maPhieu) == true)
                    {
                        FrmDutoanMuaSach_Load(sender, e);
                    }
                    else
                        MessageBox.Show("Không thể sửa", "Thông báo");
                }
            }
            else
            {
                MessageBox.Show("Tên phiếu không được bỏ trống", "Thông báo");
                txt_Tenphieu.Focus();
            }
        }
        //Nhập chi tiết phiếu dự toán
        private void btn_Nhaptiep_Click(object sender, EventArgs e)
        {
            phieuDT = getTTPhieuDT();
            if (sachBUS.UpdatePhieuDuToan(phieuDT, txt_SoPhieu.Text) == true)
            {
                if (checkSave_CT() == true)
                {
                    ctDT = getTTCTPhieuDT();
                    if (sachBUS.InsertCTPhieuDuToan(ctDT) == true)
                    {
                        dgv_DuToan.DataSource = sachBUS.GetCTPhieuDuToan(txt_SoPhieu.Text);
                        statusTexbox();
                        txt_Nhande.Focus();
                    }
                }
            }
            else
                MessageBox.Show("Không thể thêm", "Thông báo");
        }

        private void btn_Huy_Click(object sender, EventArgs e)
        {
            FrmDutoanMuaSach_Load(sender, e);
        }

        private void btn_Inthe_Click(object sender, EventArgs e)
        {
            frmReportPhieuKK frm = new frmReportPhieuKK();
            frm.maphieuDT = txt_SoPhieu.Text;
            frm.dk = 3;
            frm.ShowDialog();
            FrmDutoanMuaSach_Load(sender, e);
        }
        private void btn_Huychon_Click(object sender, EventArgs e)
        {
            try
            {
                int dong = dgv_DuToan.CurrentCell.RowIndex;
                string mact = dgv_DuToan.Rows[dong].Cells["MaCTDuToan"].Value.ToString();
                if (uti.deleteTable("CTPhieuDuToan", "MaCTDuToan", mact) == true)
                    dgv_DuToan.DataSource = sachBUS.GetCTPhieuDuToan(txt_SoPhieu.Text);
                else
                    MessageBox.Show("Không thể xóa!", "Thông báo");
            }
            catch
            {
                MessageBox.Show("Chưa chọn");
            }
        }

        private void txt_Soluong_TextChanged(object sender, EventArgs e)
        {
            try
            {
                txt_Thanhtien.Text = (Convert.ToInt32(txt_Soluong.Text) * Convert.ToDouble(txt_Dongia.Text)).ToString();
            }
            catch {
                txt_Thanhtien.Text = "0";
            }
        }

        private void txt_Dongia_TextChanged(object sender, EventArgs e)
        {
            try
            {
                txt_Thanhtien.Text = (Convert.ToInt32(txt_Soluong.Text) * Convert.ToDouble(txt_Dongia.Text)).ToString();
            }
            catch {
                txt_Thanhtien.Text = "0";
            }
        }
        PhieuDuToan getTTPhieuDT()
        {
            phieuDT.MaPhieuDuToan = txt_SoPhieu.Text;
            phieuDT.TenPhieu = txt_Tenphieu.Text;
            phieuDT.NgayLap = date_Ngaylap.Value;
            phieuDT.MaNV = manv;
            return phieuDT;
        }
        CTPhieuDuToan getTTCTPhieuDT()
        {
            string lastID = uti.GetLastID_DK("CTPhieuDuToan", "MaPhieuDuToan", phieuDT.MaPhieuDuToan, "MaCTDuToan", "MaCTDuToan", phieuDT.MaPhieuDuToan + "-0000");
            string nextID = uti.GetNextID(lastID, phieuDT.MaPhieuDuToan + "-");
            ctDT.MaCTDuToan = nextID;
            ctDT.MaPhieuDuToan = phieuDT.MaPhieuDuToan;
            ctDT.MaLoaiSach = comb_Kho.SelectedValue.ToString();
            ctDT.TenDauSach = txt_Nhande.Text;
            ctDT.SoLuong = Convert.ToInt32(txt_Soluong.Text);
            ctDT.DonGia = Convert.ToDouble(txt_Dongia.Text);
            return ctDT;
        }
        bool checkSave_CT()
        {
            
            if (txt_Nhande.Text == "")
            {
                MessageBox.Show("Chưa nhập tên sách", "Thông báo");
                return false;
            }
            if (txt_Soluong.Text.Length == 0 || uti.checkDigit(txt_Soluong.Text) == false || txt_Soluong.Text=="0")
            {
                MessageBox.Show("Số lượng không hợp lệ ", "Thông báo");
                return false;
            }
            if (txt_Dongia.Text.Length == 0 || uti.checkDigit(txt_Dongia.Text) == false || txt_Dongia.Text=="0")
            {
                MessageBox.Show("Đơn giá không hợp lệ ", "Thông báo");
                return false;
            }
            return true;
        }

        #region Load trạng thái
        void loadStatus_Button(bool k)
        {
            btn_Them.Enabled = k;
            btn_Sua.Enabled = k;
            btn_Xoa.Enabled = k;
            btn_Luu.Enabled = !k;
            btn_Huy.Enabled = !k;
            btn_Inthe.Enabled = !k;
            btn_Huychon.Enabled = !k;
            btn_Nhaptiep.Enabled = !k;
            //TextBox, combobox
            comb_Kho.Enabled=!k;
            txt_Tenphieu.ReadOnly = k;
            date_Ngaylap.Enabled = !k;
            txt_Nhande.ReadOnly = k;
            txt_Soluong.ReadOnly = k;
            txt_Dongia.ReadOnly = k;
        }
        void statusTexbox()
        {
            txt_Nhande.Text = "";
            txt_Soluong.Text = "0";
            txt_Dongia.Text = "0";
            txt_Thanhtien.Text = "";
        }
        #endregion

        private void dgv_DuToan_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
        {
            uti.dgv_GetSTT_RowHeader(sender, e, dgv_DuToan);
        }

    }
}
